package com.mo.lib.utils.anim

import android.view.View
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.view.animation.Interpolator
import android.view.animation.LinearInterpolator
import com.mo.lib.R

/**
 * @ author：mo
 * @ data：2022/10/20:9:20
 * @ 功能：
 */

fun View.actionClickAnimAlpha() {
this.startAnimation(AnimationUtils.loadAnimation(this.context, R.anim.alpha_click))
}

/**设置监听*/
fun Animation.setkAnimatorListener( listener: KAnimatorListener): Animation {
    return this.apply {
        this.setAnimationListener(listener)
    }
}
/**设置是否停留在动画结束时的状态 */
fun Animation.setkIsFillAfter( isFillAfter: Boolean=true): Animation {
    return this.apply {
        this.fillAfter = isFillAfter
    }
}
/**设置持续时间 */
fun Animation.setkDurations( durations: Long = defultDuration): Animation {
    return this.apply {
        this.duration = durations
    }
}

/** 设置动画插值器
- LinearInterpolator 匀速直线运动
- AccelerateDecelerateInterpolator 中间快两头满
- AccelerateInterpolator 开始慢然后快
- AnticipateInterpolator 开始的时候向后然后向前甩
- AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
- BounceInterpolator 动画结束的时候弹起
- CycleInterpolator 动画循环播放特定的次数，速率改变沿着正弦曲线
- DecelerateInterpolator 在动画开始的地方快然后慢
- OvershootInterpolator 向前甩一定值后再回到原来位置
 */
fun Animation.setkInterpolator(interpolator: Interpolator? = LinearInterpolator()): Animation {
    return this.apply {
        this.interpolator = interpolator
    }
}


/** 动画监听*/
class KAnimatorListener : Animation.AnimationListener {
    /**动画开始 */
    override fun onAnimationStart(animation: Animation) {}

    /**动画结束 */
    override fun onAnimationEnd(animation: Animation) {}

    /**动画重复 */
    override fun onAnimationRepeat(animation: Animation) {}
}

/** 默认动画执行时长*/
const val defultDuration: Long = 500
